草庐IT

Android PlusOneButton 不初始化

全部标签

C++11:std ref 全局变量和非函数局部 thread_local 初始化顺序?

C++11中具有非平凡构造函数的全局变量是在静态初始化阶段在进入main之前构造的。同样,非函数局部thread_local变量是在每个线程的“thread_local初始化阶段”构建的。C++11标准是否规定了这些变量的构造顺序?在这两种情况下,如果有两个变量://globalscopeA::A(){b.f();}//AconstructorusesglobalbAa;Bb;C++11标准是否指定了它们应按什么顺序进行初始化,或者如果使用未初始化的变量应该产生错误?同样适用于非函数本地thread_local://globalscopeA::A(){b.f();}//Aconstru

c++ - 模板类的静态成员数组的延迟初始化

我正在编写代码来执行Gaussianintegration与n点,其中n是一个编译时间常数。对于给定的n,我知道如何计算横坐标和权重。计算必须从头开始为每个不同的n进行。.现在,我按照这些思路做一些事情://Severalstructslikethisone(laguerre,chebyshev,etc).templatestructlegendre{staticconstsize_tsize=n;staticconstdoublex[n];staticconstdoublew[n];};templatedoublegauss_quadrature(F&&f){doubleacc=0;

c++ - const 限定符在复制初始化变量时有用吗?

我想知道在使用值的拷贝初始化非引用/指针变量时使用可选的const限定符有哪些优点和缺点:例如:voidf(constTv)而不是voidf(Tv)//v不需要改变if(constinterr=f()){/*...*而不是if(interr=f()){/*...*甚至voidf(){constT*constv=p;/*...*而不是voidf(){constT*v=p;/*...*/>这只是风格问题吗?C++11标准在其示例中使用什么?const不能提示编译器将变量存储在一些特殊的只读存储器中(在某些实现中)吗? 最佳答案 在这种情

c++ - 本地静态对象的非延迟初始化?

gcc(4.8)或icc(14.0)是否有任何模式或其他非标准机制可以保证静态局部变量的早期安全构造?为了在运行时可控的粗略分析,我需要一个本地静态对象引用的全局集合。标准的延迟构造(以及处理锁定或冗余的thread_local集合)让我很受伤,在开始时拥有完整的点列表将非常有利。有希望实现吗?#include#include//Reallywanttobuildthislistbeforemain()started!structProfilePoint;staticstd::dequepps;//Costlyconstruction,butonlyeverwithliteral/co

c++ - g++ (4.7.2) 错误或功能,在编译时初始化静态数组时?

好的,所以我试图通过在编译时初始化一堆constexprstaticintconst数组来做一些聪明的事情。尽管运行时性能完全不受初始化这些数组的控制,但这似乎是一个有趣的小练习。我写了一个测试设置看看是否可行,我最终能够做到这一点:structTest{constexprstaticintconstarray[10]=Array::array;};constexprintconstTest::array[10];intmain(){cout这里,Array有一个名为array的静态成员,它包含10个int,从0开始,其中每个后续元素的值由名为Increment(即{0,1,...,9

c++ - 用文字初始化引用成员变量

在下面的代码中,我用文字初始化了一个引用变量。classABC{public:constint&a;ABC():a(43){}voidnewfoo(){printf("NEWFOO%d",a);}};intmain(){ABCobj;obj.newfoo();}这个程序的输出是NEWFOO32767,当我知道下面的代码可以正常工作时,这似乎不合逻辑。intmain(){constint&b=3;printf("%d",b);}这里发生了什么?如果编译器在初始化引用变量期间声明了一些临时变量,那么该变量的范围是否会在main内部,因为该类在全局范围内? 最佳答

c++ - 如何在派生类中存储在基类初始化期间获得的信息?

我的情况是,作为提供数据来初始化基类的副作用,派生类计算了一条信息,该信息稍后必须通过其接口(interface)提供。下面给出了问题的想法,使用bool值作为所需的信息:classbase{public:base(some_initialization_data);//...};classderived:publicbase{public:derived():base(calc_init_data()){}boolcondition_x_occurred()const{//Howtogetattheinformationobtained//duringthecalltocalc_in

c++ - 在带有初始化的声明中,我可以使用对未初始化数据的引用吗?

我有一个创建并返回对象的函数。它也有副作用,将成功标志写入bool变量:structMyObject{...intfield1;charfield2;boolfield3;};MyObjectCreateMyObject(bool&success){...}纯属巧合,我必须将成功标志存储在我的对象中。所以我可以用这种显而易见的方式来写它:boolsuccess;MyObjectx=CreateMyObject(success);x.field3=success;或者这样:MyObjectx=CreateMyObject(x.field3);第二种方式是否涉及未定义的行为,从多个赋值到f

c++ - 在结构 vector 中初始化一个 vector

我有一个包含vector的结构vector,但我不知道如何初始化结构中的字段。我有以下代码:structmember{vector>rival_result;intmatches;}vectorranking(n);我想将结构内vector的大小设置为另一个vector的大小,并在所有字段(匹配项和对vector的整数)中设置0。N可以是一个很大的数字,因此无法手动完成。谢谢。 最佳答案 首先为member编写一个构造函数来设置vector的大小:structmember{explicitmember(intn):rival_res

【初始RabbitMQ】工作队列的实现

工作队列工作队列(又称为任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务轮训分发消息我们启动两个工作线程,一个消息发送线程,一个用来接受线程,我们来看看它们两个工作线程是如何工作的抽取工具类我们将获取信道这个重复的代码封装为一个类,当时用的时候直接调用/***连接工厂创建信道工具类*/publicclassRabbitMqUtils{publicstaticChannelgetChannel(){Connecti